package master

import (
	"encoding/json"
	"gitee.com/zhengjianfeng/crontab-worker/common"
)

var (
	// 单例
	G_workerJobParser *WorkerJobParser
)

// 测试json结构
type jobForTest struct {
	RequestUrl    string                 `json:"requestUrl"`
	RequestHeader map[string]interface{} `json:"requestHeader"`
	RequestData   map[string]interface{} `json:"requestData"`
}

// 任务解析器
type WorkerJobParser struct{}

// 检查任务是否解析成功，任务的数据结构是否正确
func (workerJobParser WorkerJobParser) JobParser(workerJob common.WorkerJob) (err error) {

	var (
		jobForTestData jobForTest
	)

	switch workerJob.JobType {
	case common.WORKER_JOB_TYPE_BASH:
		// TODO 不严格判断，只要是字符串即可，未来补充
		err = nil
	case common.WORKER_JOB_TYPE_TESTING:
		// 反序列化
		if err = json.Unmarshal([]byte(workerJob.Command), &jobForTestData); err != nil {
			err = common.ERR_WORKER_JOB_PARSER
		}
	default:
		// 任务类型不存在
		err = common.ERR_WORKER_JOB_TYPE
	}

	return
}

// 初始化任务解析器
func InitWorkerJobParser() (err error) {

	G_workerJobParser = &WorkerJobParser{}

	return
}
